package com.futureCloudMOM.core.service;

import com.futureCloudMOM.core.domain.ProduceDispatch;
import com.futureCloudMOM.core.base.service.BaseService;
import com.futureCloudMOM.core.domain.ProduceReport;

import java.util.List;

/**
 * 【Produce_Dispatch】的数据库操作Service
 *
 * @author Administrator
 * @since 2023-06-06 16:02:32
 */
public interface ProduceDispatchService extends BaseService<ProduceDispatch> {

    /**
     * 是否有进行中的派工单
     *
     * @param billId 生产订单ID
     * @return true 有 / false 无
     */
    boolean hasRunningDispatch(Long billId);

    /**
     * 根据生产订单ID和生产状态汇总数量
     *
     * @param billId 生产订单ID
     * @param status 生产状态
     * @return Integer
     */
    Integer countByBillIdAndStatus(Long billId, Long status);

    /**
     * 派工单变更
     * @param produceDispatch 变更的派工单信息
     */
    void dispatchUpdate(ProduceDispatch produceDispatch);

    /**
     * 派工单强制关闭
     * @param id 派工单ID
     */
    void forceStop(Long id);

    /**
     * 根据生产工单ID查询该工单下的派工单详情
     * @param id 生产工单ID
     * @return 派工单详情数组
     */
    List<ProduceDispatch> dispatchListByBillTaskSubId(Long id);

    /**
     * 报工数量回写给派工单 并判断派工单是否生产完成
     * @param produceReport 报工数据
     */
    void reportWrite(ProduceReport produceReport);
}
